1. Technical Field
The present invention relates generally to processors and computing systems, and more particularly, to a simultaneous multi-threaded (SMT) processor. The present invention also relates to processor usage accounting systems.
2. Description of the Related Art
Present-day high-speed processors include the capability of simultaneous execution of instructions, speculative execution and loading of instructions and simultaneous operation of various resources within a processor. In particular, it has been found desirable to manage execution of one or more threads within a processor, so that more than one execution thread may use the processor and so that resources more effectively than they are typically used by a single thread.
Prior processor designs have dealt with the problem of managing multiple threads via a hardware state switch from execution of one thread to execution of another thread. Such processors are known as hardware multi-threaded (HMT) processors, and as such, can provide a hardware switch between execution of one or the other thread. An HMT processor overcomes the limitations of waiting on a stalled thread by permitting the hardware to switch execution to a another thread. Execution of both threads can be performed not simultaneously, but by allocating execution slices to each thread when the other thread experiences a stall condition such as a cache miss.
Simultaneous multi-threaded (SMT) processors provide an even more efficient use of processor resources, as multiple threads may simultaneously use processor resources. Multiple threads are concurrently executed in an SMT processor so that multiple processor execution units, such as floating point units, fixed point instruction units, load/store units and others can be performing tasks for one (or more depending on the execution units' capabilities) of multiple threads simultaneously. Storage and register resources may also be allocated on a per-thread basis so that the complete internal state switch of the HMT is avoided.
Accounting for processor time use is necessary for administration of computer services sales, as well as for internal cost-accounting management when, for example, some processor runs are for research and development activities that permit the hardware to be capitalized in a different manner for tax purposes than other uses. A server may be partitioned and processor time told to multiple users “on demand” or on an as-used basis. Additionally, processor time may be utilized by hardware owners or lessors and also subcontracted out to entities paying for services. Therefore, accurate accounting for processor execution time is a necessity in computer architectural and software models. Also, processor time usage, especially on a per-thread basis, is useful for profiling programs for optimization.
In single-threaded processing systems, accounting is generally straightforward. A count of processor cycle use or even simple “wall-clock” time measurement can be provided for complete job runs, as even if multiple threads within multiple programs are executed, they are not executed simultaneously, but sequentially. A tally of cycle times is maintained until a job is complete and the total is presented for accounting purposes. The measured time correlates directly to processor resource utilization.
In an HMT machine, the task is similar in that within the processor hardware, only one thread is executing at a time and multiple counters are used to track the processor time usage of each thread while, by running a counter only while its associated thread is active. However, in an SMT processor, two or more threads may be simultaneously executing within a single processor core and the usage of resources by each thread is not easily determined by a simple execution count or time measurement.
It is therefore desirable to provide a method and apparatus that can account for processor time usage in an SMT processor. It is further desirable to provide a method for accounting for resource usage within an SMT processor usage among threads executing within such a processor.